

Map<String,String> call(String project,String branch) {
    def filePath = "/var/jenkins_home/nexus_record/${project}/${branch}"
    print("读取版本文件路径: ${filePath}")
    def lines
    Comparator<String> versionComparator = new Comparator<String>() {
        @Override
        int compare(String o1, String o2) {
            o1 = o1.replaceAll("-", "")
            o1 = o1.replaceAll("/", "")
            Long o1Num = Long.parseLong(o1)
            o2 = o2.replaceAll("-", "")
            o2 = o2.replaceAll("/", "")
            Long o2Num = Long.parseLong(o2)
            return o2Num-o1Num
        }
    }// 反转比较逻辑
    Map<String, String> map = [:]
    try {
        // 执行命令并按行分割
        lines = sh(
                script: "tail -n 10 ${filePath}",
                returnStdout: true
        ).trim().split('\n')  // 按换行符分割为列表

        for (String line in lines) {
           String [] strs= line.split("\\|\\|")
           map.put(strs[0].trim(),strs[1].trim())
        }
    } catch (Exception e) {
        println "读取文件失败：${e.message}"
    }
    map=sortMap(map)
    return map;

}
@NonCPS
Map<String, String> sortMap(Map<String, String> map) {
    if (!map) {
        return [:]
    }

    // 关键：用 Groovy 闭包替代 Java Comparator
    def versionClosure = { String o1, String o2 ->
        try {
            String cleanO1 = o1?.replaceAll("-", "")?.replaceAll("/", "") ?: "0"
            String cleanO2 = o2?.replaceAll("-", "")?.replaceAll("/", "") ?: "0"

            Long o1Num = Long.parseLong(cleanO1)
            Long o2Num =  Long.parseLong(cleanO2)

            return o2Num.compareTo(o1Num) // 倒序比较（返回int）
        } catch (Exception e) {
            return 0 // 异常时默认顺序
        }
    }

    // 1. 将 Set 转为 List（确保可排序）
    // 2. 用闭包排序（Set.sort() 支持闭包）
    List<String> sortedKeys = new ArrayList<>(map.keySet()).sort(versionClosure)

    // 重建有序 Map
    Map<String, String> sortedMap = new LinkedHashMap<>()
    sortedKeys.each { key ->
        sortedMap.put(key, map.get(key))
    }

    return sortedMap
}